<?php
namespace app\index\controller;
use think\Controller;
use app\index\model\Vercode;
use app\index\model\User;
use think\Loader;

class Reg extends Common
{
    public function index()
    {
        // 从数据库中随机获取 一个问题，把答案存储在session;
        
        $question = (new Vercode)->getRandOne();
        // 分配变量
        $this->assign('question',$question);
        $this->assign('title',"注册");
        // 引一个页面
        return $this->fetch('');
    }

    public function add()
    {
        // // header("Content-type: text/html; charset=utf-8");
        // echo json_encode("学并思");exit;
        // 1 接收所有注册的数据 
        $data = input('post.');


        $this->checkGt();

         // 2 验证数据 
        //  人类验证
        //  手机有没有  失败 返回一个错误告诉js
        //  昵称有没有

        $validate = Loader::validate('Reg');

        // $data['phone']= 516514654165352165;

        if(!$validate->scene('reg')->check($data)){
            $this->error($validate->getError());
        }

        $res =  (new User)->addUser($data);
       
        //  3  把数据增加到数据 
        //  
        if($res){
            $this->success("注册成功");
        }else{
            $this->error("注册失败");
        }
        //  4 返回一个成功 注册成功
 
        // var_dump($data);
    }

    public function checkGt($value='')
    {
        define("CAPTCHA_ID", "48a6ebac4ebc6642d68c217fca33eb4d");
        define("PRIVATE_KEY", "4f1c085290bec5afdc54df73535fc361");
        require_once '../vendor/gt/class.geetestlib.php';

        $GtSdk = new \GeetestLib(CAPTCHA_ID, PRIVATE_KEY);


        $data = array(
                "user_id" => $_SESSION['user_id'], # 网站用户id
                "client_type" => "web", #web:电脑上的浏览器；h5:手机上的浏览器，包括移动应用内完全内置的web_view；native：通过原生SDK植入APP应用的方式
                "ip_address" => "127.0.0.1" # 请在此处传输用户请求验证时所携带的IP
            );

        if ($_SESSION['gtserver'] == 1) {   //服务器正常
            $result = $GtSdk->success_validate($_POST['geetest_challenge'], $_POST['geetest_validate'], $_POST['geetest_seccode'], $data);
            if ($result) {
                return true;
            } else{
                $this->error("极验证不通过");
            }
        }else{  //服务器宕机,走failback模式
            if ($GtSdk->fail_validate($_POST['geetest_challenge'],$_POST['geetest_validate'],$_POST['geetest_seccode'])) {
                return true;
            }else{
                $this->error("极验证不通过");
            }
        }
    }

    public function getgt()
    {
        define("CAPTCHA_ID", "48a6ebac4ebc6642d68c217fca33eb4d");
        define("PRIVATE_KEY", "4f1c085290bec5afdc54df73535fc361");
        require_once '../vendor/gt/class.geetestlib.php';

        $GtSdk = new \GeetestLib(CAPTCHA_ID, PRIVATE_KEY);


        // session_start();

        $data = array(
                "user_id" => "test", # 网站用户id
                "client_type" => "web", #web:电脑上的浏览器；h5:手机上的浏览器，包括移动应用内完全内置的web_view；native：通过原生SDK植入APP应用的方式
                "ip_address" => "127.0.0.1" # 请在此处传输用户请求验证时所携带的IP
        );

        $status = $GtSdk->pre_process($data, 1);
        $_SESSION['gtserver'] = $status;
        $_SESSION['user_id'] = $data['user_id'];
        echo $GtSdk->get_response_str();exit;
    }
}
